_require local "../../../../basis.smi"

_require       "../../../compilerIRs/absyn/main/Absyn.smi"
_require       "../../../compilerIRs/absyn/main/Fixity.smi"
_require       "../../../compilerIRs/patterncalc/main/PatternCalc.ppg.smi"
_require local "../../../data/runtimetypes/main/FFIAttributes.ppg.smi"
_require       "../../../data/symbols/main/Loc.smi"
_require local "../../../data/symbols/main/RecordLabel.smi"
_require       "../../../data/symbols/main/Symbol.smi"
_require local "../../../extensions/debug/main/Bug.smi"
_require local "../../../extensions/usererror/main/UserErrorUtils.smi"
_require local "../../analyzefiles/main/Analyzers.smi"
_require local "./ElaborateError.ppg.smi"
_require local "./ElaborateSQL.smi"
_require local "./ElaborateForeach.smi"

structure ElaborateCore =
  struct
    val checkReservedNameForConstructorBind : Symbol.symbol -> unit
    val checkReservedNameForValBind : Symbol.symbol -> unit
    val elabFFITy : Absyn.ffiTy -> PatternCalc.ffiTy
    val elabDec : (Fixity.fixity * Loc.loc) SymbolEnv.map
                  -> Absyn.dec
                  -> PatternCalc.pdecl list * (Fixity.fixity * Loc.loc) SymbolEnv.map
    val elabInfixPrec : string * Loc.loc -> int
  end
